iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Kotlin

new to Kotlin系列 第 19

Day 19 巢狀類別以及內部類別

  • 分享至 

  • xImage
  •  

昨天介紹了會受到繼承限制的密封類別

sealed interface Error

sealed class IOError(): Error

class FileReadError(val file: File): IOError()
class DatabaseError(val source: DataSource): IOError()

object RuntimeError : Error

今天則是要介紹巢狀類別以及內部類別
首先談談巢狀類別(Nested classes)

  • 所有類別與介面的組合都是可能的
    • 在類別內宣告另一個類別
    • 在類別內宣告介面
    • 在介面內宣告類別
    • 在介面內宣告另一個介面
  • 但要注意的是巢狀類別沒辦法存取外部類別的屬性
class Outer {
    private val bar: Int = 1
    class Nested {
        fun foo() = 2
    }
}

val demo = Outer.Nested().foo()

由於巢狀類別沒辦法存取外部類別的屬性
若我們需要存取的話,則需要加上inner
也就是所謂的內部類別(Inner classes)

class Outer {
    private val bar: Int = 1
    inner class Inner {
        fun foo() = bar
    }
}

val demo = Outer().Inner().foo()

上一篇
Day 18 密封
下一篇
Day 20 列舉類別以及內嵌值類別
系列文
new to Kotlin30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言